package test;

import java.util.ArrayList;
import java.util.List;

/**
 * VM Args：-XX:PermSize=10M -XX:MaxPermSize=10M
 * 在JDK1.6及之前版本中，由于常量池分配在永久代中(即方法区)，我们可以通过-XX:PermSize和-XX:MaxPermSize限制方法区大小，从而间接限制其中常量池的容量
 * 而JDK1.8之后就存放到堆中了，通过 -Xms5M -Xmx10M 限制大小
 */
public class RuntimeConstantPoolOOM {

    static String  base = "string";

    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        for (int i=0;i< Integer.MAX_VALUE;i++){
            String str = base + base;
            base = str;
            list.add(str.intern());
        }
    }
}

